<!DOCTYPE html>
            
<HTML>
<HEAD>
<meta name="booktitle" content="Developing Applications With Objective Caml" >
 <meta charset="ISO-8859-1"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<META name="GENERATOR" content="hevea 1.05-7 of 2000-02-24">
<META NAME="Author" CONTENT="Christian.Queinnec@lip6.fr">
<LINK rel=stylesheet type="text/css" href="videoc-ocda.css">
<script language="JavaScript" src="videoc.js"><!--
//--></script>
<TITLE>
 Summary
</TITLE>
</HEAD>
<BODY class="regularBody">
<A HREF="book-ora134.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora136.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H2> Summary</H2>
In this chapter, we introduced all the facilities that the Objective CAML
module language offers, in particular parameterized modules.<BR>
<BR>
As all module systems, it reflects the duality
between interfaces and implementations, here presented as a duality 
between signatures and structures. Signatures allow hiding
information about type, value or exception definitions.<BR>
<BR>
By hiding type representation, we can make certain types abstract,
ensuring that values of these types can only be manipulated through
the operations provided in the module signature. We saw how to
exploit this mechanism to facilitate sharing of values hidden in
closures, and to offer multiple views of a given implementation.
In the latter case, explicit type sharing annotations are sometimes
necessary to achieve the desired behavior.<BR>
<BR>
Parameterized modules, also called functors, go one step beyond and
support code reuse through simple mechanisms similar to function
abstraction and function application.<BR>
<BR>
<HR>
<A HREF="book-ora134.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora136.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
